I. Field of the Invention
The present invention generally relates to updating software, including the use of patching methodologies to update software programs. More particularly, the invention relates to systems and methods for updating software using a base image and an updating patch.
II. Background Information
Traditionally, software programs need to be updated due to, for example, the discovery of critical bugs or need for improvements. When programs need to be updated, a patch can be used. A patch may include compiled code, e.g., a binary file, which is developed and distributed as a replacement for or an insertion into a program. The patch may be provided to program users through various methods, such as through an automatic update mechanism or the download of a patch. The patch may provide an update to critical bugs in the program. The patch may also be used to add functionalities to the program or remove functionalities from the program.
Patching is a process of applying changes to a single file, or a set of files, in a directory structure. The file, or set of files, may be compiled code, a text text file in a directory. Basic patching methods include a single-version patch method and a multi-version patch method.
A single-version patch method is used for updating a particular version of a program. Applying the patch requires the installed program to meet certain requirements, such as being a specific version of a program. A single-version patch method utilizes a patch with a small patch size tied to a specific version of a program. If a program has multiple versions, a different patch will need to be provided for each version of the program. Once the patch is applied to the installed program, the previous image of the program will be changed to the patched version of the program.
A multi-version patch method updates multiple versions of the program. The multi-version patch contains changes for each version of the program. While the multi-version patch is more flexible in terms of program version requirements, the overall size of the patch needed is increased.
Accordingly, there is a need for improved methods and systems for updating or patching programs from a single patch file. In addition, there is a need for updating programs utilizing a patch with a small file size and the ability to update multiple versions of a program.